/** 自定组件属性模型 */

import {
  BwCustomComNodeAttrFromTypeEnum,
  BwCustomComNodeAttrDataTypeEnum,
  BwCustomComNodeAttrJsExpParamDataTypeEnum,
  BwCustomComNodeAttrJsExpParamFromTypeEnum,
} from './enum'

/** 当前自定义组件属性配置模型模型 */
export interface BwCustomComNodeAttrModel {
  /** 属性值来源类型 */
  valueFromType: BwCustomComNodeAttrFromTypeEnum

  /** 属性值数据类型 */
  valueDataType: BwCustomComNodeAttrDataTypeEnum | null

  isModel?: boolean

  /** 常量值 */
  constValue?: string

  /** 组件变量名称 */
  comVarName?: string

  /** 组件外放属性名称 */
  comPropsName?: string

  /** js 表达式逻辑体 */
  jsExpBodyLogic?: string | null

  /** js 表达式逻辑体入参 */
  jsExpParams?: Array<BwCustomComNodeAttrJsExpParamModel> | null

  /** 插槽变量名称 */
  slotVarName?: string

  /** 循环变量名称 */
  forVarName?: string
}

/** 当前自定义组件属性js 表达式入参模型 */
export interface BwCustomComNodeAttrJsExpParamModel {
  /** 参数标识 */
  key: string

  /** 参数名称 */
  name: string

  /** 参数是否必填 */
  isRequire: boolean | null

  /** 参数数据类型 */
  paramDataType: BwCustomComNodeAttrJsExpParamDataTypeEnum

  /** 参数值来源 */
  paramFromType: BwCustomComNodeAttrJsExpParamFromTypeEnum

  /** 参数常量值 */
  constValue: string

  /** 组件变量名称 */
  comVarName?: string

  /** 组件外放属性名称 */
  comPropsName?: string

  /** 组件节点循环变量名称 */
  nodeForVarName?: string

  /** 插槽变量名称 */
  slotVarName?: string

  /** 参数备注 */
  remark?: string | null
}
